import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

//用俩个队列实现栈
//你只能使用队列的标准操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。
//你所使用的语言也许不支持队列。 你可以使用 list （列表）或者 deque（双端队列）来模拟一个队列 , 只要是标准的队列操作即可
class MyStack {
    //定义两个队列
     Queue<Integer> A;
    Queue<Integer> B;
    public MyStack() {
        //构造方法
         A =new LinkedList<>();
         B  = new LinkedList<>();
    }

    //将元素 x 压入栈顶。
    public void push(int x) {

     if(!A.isEmpty()){
         A.offer(x);
     }else if(!B.isEmpty()){
         B.offer(x);
     }else {
         A.offer(x);
     }
    }
    //移除并返回栈顶元素。
    public int pop() {
        if(empty()) {
            return -1;
        }

        if(!A.isEmpty()){
            int a =A.size();
            for (int i = 0; i < a-1; i++) {
                int n = A.poll();
                B.offer(n);
            }
            return A.poll();
        }else {
            int a =B.size();
            for (int i = 0; i < a - 1; i++) {
                int n = B.poll();
                A.offer(n);
            }
            return B.poll();
        }

    }
    // 返回栈顶元素
    public int top() {
        if(empty()) {
            return -1;
        }
        int n = -1;
        if(!A.isEmpty()){
            int a =A.size();
            for (int i = 0; i < a; i++) {
                 n = A.poll();
                B.offer(n);
            }
            return n;
        }else {
            int a =B.size();
            for (int i = 0; i < a; i++) {
               n = B.poll();
                A.offer(n);
            }
            return n;
        }

    }
    //如果栈是空的，返回 true ；否则，返回 false
    public boolean empty() {
        return A.isEmpty()&&B.isEmpty();

    }
}